package IO.FileInputStream;

import java.io.FileInputStream;

/*
* 读出数据：
* 1、创建FileInputStream对象，构造方法中传递写入数据的源
* 注意：
*   1、文件不存在直接报错
*       java为什么这么设计？
*           读取时，数据是在文件当中，文件不存在就代表没有数据
* 2、使用FileInputStream对象中的方法read，把文件读取到程序中
* 注意：
*   1、read方法每次只读一个字节，读取一次移动一次指针
*   2、返回一个int类型的数据，如果返回-1，表示读取完毕
*   3、空格、换行符、回车符，也是字节
*
* 3、释放资源
* */
public class Demo1 {
    public static void main(String[] args) throws Exception{
        //1、创建FileInputStream对象
        FileInputStream fis = new FileInputStream("Day05/src/IO/FileInputStream/wordsEnglish");

        //2、使用read方法，把文件读取到程序中
//        int b1 = fis.read();
//        System.out.println((char) b1);//97 只读一个字节，读到最后一个字节后，再读就是-1
        //方式一：无参数read方法，每次读取一个字节
//        int len;
//        while ((len = fis.read()) != -1){
//            System.out.print((char) len);
//        }
        //方式二：有参数read方法，每次读取多个字节
        byte[] bytes = new byte[3];//当数组为3时，可以读中文
        int len;
        while ((len = fis.read(bytes)) != -1){

            //len表示读取的实际字节数
            System.out.print(new String(bytes,0,len));//abc123_++
//           System.out.print(new String(bytes));//abc123_+++ 和长度取余没有为0，多出来的字节会重复
        }

        //3、释放资源
        fis.close();
    }
}
